/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package symulatorwindy.logic;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Kuba
 */
public class Parametry {
    
    private List<Pietro> Trasa;
    private double CzasJazdyPietro;
    private double CzasWeWyOsoby;
    private List<Pasazer> pasazerowieCollection ;
    
    //Czas obsługi pasażera
    public double min_obslugi_pasazera;
    public double max_obslugi_pasazera;
    public double sr_obslugi_pasazera;
    
    //Czas czekania na winde
    public double min_czas_czekania;
    public double max_czas_czekania;
    public double sr_czas_czekania;
    
    //liczba osobo pieter czyli suma pieter przejechanych przez kazda osobe.
    //bo normalna liczba pieter to zawsze max 20 do gory i do dolu :)
    public int liczba_pieter;
    
    public Parametry(List<Pietro> Trasa,double CzasJazdyPietro,double CzasWeWyOsoby,List<Pasazer> pasazerowieCollection){
        
    this.Trasa=Trasa;
    this.CzasJazdyPietro=CzasJazdyPietro;
    this.CzasWeWyOsoby=CzasWeWyOsoby;
    this.pasazerowieCollection= pasazerowieCollection;
    }
    
    public void czas_czekania(){
        double czas=0;
        double max_czas=0;
        double min_czas=0;
        double sr_czas=0;
        double sum_czas=0;
        int sum_pasazerowie=0;
        int sum_pietra=0;
        
        double tmp=0;
        double tmp_sum=0;
        double tmp_os=0;
        
        int pietra=0;
        int pasazerowie=0;
        int pasazerowie_all=0;
        int start=0;
        int stop=0;
        
        double czas_jazdy=0;
        double czas_ludzi=0;
        double czas_czekania=0;
        
        for (int n=0;n<Trasa.size();n++){
            System.out.println("Trasa: "+Trasa.get(n).numerPietra);
            System.out.println("l wsiadajacych: "+Trasa.get(n).pasazerowieWsiadający.size());
            System.out.println("l wysiadajacych: "+Trasa.get(n).pasazerowieWysiadajacy.size());
            System.out.println("pasazerowie:"+pasazerowieCollection.get(n).getStart());
            System.out.println("pasazerowie:"+pasazerowieCollection.get(n).getStart());
            System.out.println("xxxxxxx");
            
            
        }
        
        //policzenie czasu dla kazdej osoby
        for(int i=0 ; i<pasazerowieCollection.size();i++){
            pasazerowie=0;
            
            if(pasazerowieCollection.get(i).getStart() > pasazerowieCollection.get(i).getStop()){
                
                start = pasazerowieCollection.get(i).getStart();
                stop = pasazerowieCollection.get(i).getStop();
                pietra=start-stop;
                   
                
                    for(int j=0;j<Trasa.size();j++){
                    if(Trasa.get(j).numerPietra<=start && Trasa.get(j).numerPietra>=stop){
                    
                    if(Trasa.get(j).numerPietra<=stop){
                        pasazerowie=pasazerowie+(Trasa.get(j).pasazerowieWsiadający.size())+(Trasa.get(j).pasazerowieWysiadajacy.size());
                        //System.out.println("xxxxx:"+Trasa.size());
                        break;
                    }
                    pasazerowie=pasazerowie+(Trasa.get(j).pasazerowieWsiadający.size())+(Trasa.get(j).pasazerowieWysiadajacy.size());
                    }
                    }

                czas_jazdy=pietra*CzasJazdyPietro;
                czas_ludzi=pasazerowie*CzasWeWyOsoby;
                czas=czas_jazdy+czas_ludzi;               
                
        }else{  
                start = pasazerowieCollection.get(i).getStart();
                stop = pasazerowieCollection.get(i).getStop();
                pietra=stop-start;
                
                for(int j=0;j<Trasa.size();j++){
                    if(Trasa.get(j).numerPietra>=start && Trasa.get(j).numerPietra<=stop){
                    
                    if(Trasa.get(j).numerPietra>=stop){
                        pasazerowie=pasazerowie+(Trasa.get(j).pasazerowieWsiadający.size())+(Trasa.get(j).pasazerowieWysiadajacy.size());
                        //System.out.println("xxxxx:"+Trasa.size());
                        break;
                    }
                    pasazerowie=pasazerowie+(Trasa.get(j).pasazerowieWsiadający.size())+(Trasa.get(j).pasazerowieWysiadajacy.size());
                    }
                    }

                czas_jazdy=pietra*CzasJazdyPietro;
                czas_ludzi=pasazerowie*CzasWeWyOsoby;
                czas=czas_jazdy+czas_ludzi;                

            }
            pasazerowieCollection.get(i).setObsluga(czas);
            pasazerowieCollection.get(i).setCzekanie(czas_czekania);
            sum_pietra=pietra+sum_pietra;
            czas_czekania=czas+czas_czekania;
            czas=0; 
        }
        
        //Znalezienie max,min i sr z czasow
        double suma_obslugi=0;
        double suma_czekania=0;
        for(int i=0;i<pasazerowieCollection.size();i++)
        {
            System.out.println("i="+i);
            suma_obslugi=suma_obslugi+pasazerowieCollection.get(i).getObsluga();
            suma_czekania=suma_czekania+pasazerowieCollection.get(i).getCzekanie();
            
            //dla pierwszych
            if(i==0){
                min_obslugi_pasazera=pasazerowieCollection.get(i).getObsluga();
                min_czas_czekania=pasazerowieCollection.get(i).getCzekanie();
            }
            //min czas obslugi
            if(pasazerowieCollection.get(i).getObsluga() < min_obslugi_pasazera){
                min_obslugi_pasazera=pasazerowieCollection.get(i).getObsluga();
            }
            //max czas obslugi
            if(pasazerowieCollection.get(i).getObsluga() > max_obslugi_pasazera){
                max_obslugi_pasazera=pasazerowieCollection.get(i).getObsluga();
            }
            //min czas czekania
            if(pasazerowieCollection.get(i).getCzekanie() < min_czas_czekania){
                min_czas_czekania=pasazerowieCollection.get(i).getCzekanie();
            }
            //maxn czas czekania
            if(pasazerowieCollection.get(i).getCzekanie() > max_czas_czekania){
                max_czas_czekania=pasazerowieCollection.get(i).getCzekanie();
            }
        }
        sr_obslugi_pasazera=suma_obslugi/pasazerowieCollection.size();
        sr_czas_czekania=suma_czekania/pasazerowieCollection.size();
        liczba_pieter=sum_pietra;
    }
    
}
